/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package ru.vsu.model;

import java.io.Serializable;
import java.util.List;
import javax.ejb.EJB;
import javax.inject.Named;
import javax.enterprise.context.SessionScoped;
import javax.validation.constraints.Pattern;
import ru.vsu.service.UserService;

/**
 *  Служебный бин с сессионной информацией.
 *
 * @author Roman Velichkin <vrnroman@gmail.com>
 */
//@Named(value="mainPage")
//@Model
@Named
@SessionScoped
public class MainPage implements Serializable {

    @EJB
    private UserService userService;

//    @Inject
//    protected FacesContext facesContext;

    private Long userId;

    private String message;

    @Pattern(regexp="[\\da-zA-Z_]+",
        message="В имени пользователя допустимы символы латинского алфавита, цифры и знак подчёркивания")
    private String userName;

    @Pattern(regexp="[\\da-zA-Z_]+",
        message="В пароле допустимы символы латинского алфавита, цифры и знак подчёркивания")
    private String password;

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }


    public String getUserName() {
        return userName;
    }

    public void setUserName(String userName) {
        this.userName = userName;
    }

    /** Creates a new instance of MainPage */
    public MainPage() {
    }

    public String createUser() {
        List<String> result = userService.createNewUser(userName, password);
        if (result == null) {
            userId = userService.tryLogOn(userName, password);
            message = String.format("Пользователь %s успешно создан", userName);
            return "user.xhtml?faces-redirect=true";
            //facesContext.addMessage(null,  new FacesMessage("Сохранено", String.format("Пользователь %s успешно создан", user.getName())));
        }
        message = "";
        for (String error : result) {
            message += error;
            //facesContext.addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR, "Ошибка", error));
        }
        return null;
    }

    public String loginOn() {
        userId = userService.tryLogOn(userName, password);
        if (userId == null) {
            message = String.format("Неверные логин или пароль");
            return null;
        }
        return "user.xhtml?faces-redirect=true";

    }

    public String getUsersCount() {
        return "There are " + userService.countOfUsers() + " users";
    }

    public String getMessage() {
        return message;
    }

    public void setMessage(String message) {
        this.message = message;
    }

    public Long getUserId() {
        return userId;
    }


}
